package GUI;

import java.awt.Color;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.GridLayout;

import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.net.MalformedURLException;

import Applikationslogik.*;


public class PersonEditieren_Action implements ActionListener  {

    private Verwaltung v2;
    private Person p;
    
     // Das Außenrum
     JFrame person_editieren_action;
     JPanel panel;
     JPanel panel_button;

     // Die Textfeldbeschreibungen
     JLabel name;
     JLabel vorname;
     JLabel telefon;
     JLabel email;
     JLabel raum;

     // Die Eingabemaske
     JTextField eingabe_vorname;
     JTextField eingabe_nachname;
     JTextField eingabe_telefon;
     JTextField eingabe_email;
     JTextField eingabe_raum;

     // Der Anlegenbutton
     JButton editieren;


     public PersonEditieren_Action(Verwaltung verwaltung, Person person) {

         v2 = verwaltung;
         p = person;
         person_editieren_action = new JFrame("Person editieren");
         panel = new JPanel();

         // Jetzt werden die Elemente gemalt
         name = new JLabel("Ihr Nachname: ");
         vorname = new JLabel("Ihr Vorname: ");
         telefon = new JLabel("Ihre Telefonnummer: ");
         email = new JLabel("Ihre E-Mail: ");
         raum = new JLabel("Ihre Raumnummer: ");




         try {

          // Wandeln des Integers in einen JTextField konformes Format (String)
         Integer telefon_integer = new Integer(person.get_telefon());
         String telefon_string = telefon_integer.toString();

         Integer raum_integer = new Integer(person.get_raum());
         String raum_string = raum_integer.toString();

         eingabe_vorname = new JTextField(person.get_vorname(), 20);
         eingabe_nachname = new JTextField(person.get_nachname(), 20);


         eingabe_telefon = new JTextField(telefon_string);
         

         eingabe_email = new JTextField(person.get_email(), 20);


         eingabe_raum = new JTextField(raum_string);
         
         
         }
         catch (RemoteException ex) {
            }

         // Button wird gemacht und ActionListener gesetzt
         editieren = new JButton("Person editieren");
         editieren.addActionListener(this);

         // Gridlayout

         panel.setLayout(new GridLayout(6,2));

         // Panel wird gemalt

         panel.add(name);
         panel.add(eingabe_nachname);
         panel.add(vorname);
         panel.add(eingabe_vorname);
         panel.add(telefon);
         panel.add(eingabe_telefon);
         panel.add(email);
         panel.add(eingabe_email);
         panel.add(raum);
         panel.add(eingabe_raum);
         panel.add(editieren);


         person_editieren_action.add(panel);
         person_editieren_action.setSize(400, 300);
         person_editieren_action.setVisible(true);

     }



    public void actionPerformed(ActionEvent object) {
                if (object.getSource() == editieren){
               System.out.println("Objekt wird an Applikationsschicht übergeben.");

                //Überprüfung ob alle Felder ausgefüllt sind
                 if(eingabe_nachname.getText().equals("") || eingabe_vorname.getText().equals("") || eingabe_telefon.getText().equals("") || eingabe_email.getText().equals("") || eingabe_raum.getText().equals("") )
                 JOptionPane.showMessageDialog(panel, "Bitte alle Felder ausfüllen!");

                 else {

                       try {
                            // In das Person Objekt die neuen Daten befüllen
                            p.set_vorname(eingabe_vorname.getText());
                            p.set_nachname(eingabe_nachname.getText());
                            p.set_email(eingabe_email.getText());
                            p.set_raum(Integer.parseInt(eingabe_raum.getText()));
                            p.set_telefon(Integer.parseInt(eingabe_telefon.getText()));
                            // Das editierte Objekt wird jetzt an die Verwaltung via updatePerson zurückgegeben
                            v2.updatePerson(p);    
                            JOptionPane.showMessageDialog(panel, "Person wurde editiert.");
                            person_editieren_action.dispose(); // Frame schließen
                        }
                       catch (RemoteException re) {

                            // Exception abfangen und anzeigen via PopUp
                            System.out.println("RemoteException");
                            System.out.println(re);
                            JOptionPane.showMessageDialog(panel, "Fehler: " + re.getCause());
                     }
                 }
          }
    }
}